Intro a Matplotlib

Matplotlib = Libreria para graficas cosas matematicas

Que es Matplotlib?

Matplotlin es un libreria para crear imagenes 2D de manera facil.

Checate mas en :

Para usar matplotlib, solo tiene que importar el modulo ..tambien te conviene importar numpy pues es muy util


In [2]:
import numpy as np # modulo de computo numerico
import matplotlib.pyplot as plt # modulo de graficas
# esta linea hace que las graficas salgan en el notebook
%matplotlib inline

Crear graficas (plot)

Crear graficas es muy facil en matplotlib, si tienes una lista de valores X y otra y..solo basta usar :


In [13]:
x = np.array([0,1,2,3,4])
y = x**2 #cuadramos x
plt.plot(x,y)
print("== Grafica sencilla ==")


== Grafica sencilla ==

Podemos usar la funcion np.linspace para crear valores en un rango, por ejemplo si queremos 100 numeros entre 0 y 10 usamos:


In [14]:
x = np.linspace(0,10,100)
y = x**2 #cuadramos x
plt.plot(x,y)
print("== Grafica sencilla ==")


== Grafica sencilla ==

Y podemos graficar dos cosas al mismo tiempo:


In [16]:
x = np.linspace(0,10,100)
y1 = x # una linea
y2 = x**2 # cuadramos x
plt.plot(x,y1)
plt.plot(x,y2)
print("== Dos graficas sencillas ==")


== Dos graficas sencillas ==

Que tal si queremos distinguir cada linea? Pues usamos legend(), de leyenda..tambien tenemos que agregarles nombres a cada plot


In [19]:
x = np.linspace(0,10,100)
y1 = x # una linea
y2 = x**2 # cuadramos x
plt.plot(x,y1,label="Linea")
plt.plot(x,y2,label="Cuadrado")
plt.legend()
print("== Dos graficas sencillas ==")


== Dos graficas sencillas ==

Tambien podemos hacer mas cosas, como dibujar solamente los puntos, o las lineas con los puntos usando linestyle:


In [30]:
x = np.linspace(0,10,100)
y1 = x # una linea
y2 = x**2 # cuadramos x
y3 = np.sqrt(x) # sacamos raiz cuadrada a x
y4 = np.power(x,1.5) # elevamos x a la potencia 1.5

plt.plot(x,y1,label="Linea",linestyle='-') # linea
plt.plot(x,y2,label="Cuadrado",linestyle=':') # puntitos
plt.plot(x,y3,label="Raiz",linestyle='-.') # linea y punto
plt.plot(x,y4,label="potencia 1.5",linestyle='--') # lineas salteadas
plt.legend()
print("== Dos graficas sencillas ==")


== Dos graficas sencillas ==

Dibujando puntos (scatter)

Aveces no queremos dibujar lineas, sino puntos, esto nos da informacion de donde se encuentras datos de manera espacial. Para esto podemos usarlo de la siguiente manera:


In [35]:
N = 50 # numero de puntos
x = np.random.rand(N) # numeros aleatorios entre 0 y 1
y = np.random.rand(N)
plt.scatter(x, y)
print("== Scatter de puntos aleatorios ==")


== Scatter de puntos aleatorios ==

Pero ademas podemos meter mas informacion, por ejemplo dar colores cada punto, o darle tamanos diferentes:


In [38]:
N = 50 # numero de puntos
x = np.random.rand(N) # numeros aleatorios entre 0 y 1
y = np.random.rand(N)
colores = np.random.rand(N) # colores aleatorios
radios= 15 * np.random.rand(N) # numeros aleatorios entre 0 y 15
areas = np.pi * radios**2 # la formula de area de un circulo
plt.scatter(x, y, s=areas, c=colores, alpha=0.5)
print("== Scatter plot de puntos aleatorios ==")


== Scatter plot de puntos aleatorios ==

Histogramas (hist)

Los histogramas nos muestran distribuciones de datos, la forma de los datos, nos muestran el numero de datos de diferentes tipos:


In [45]:
N=500
x = np.random.rand(N) # numeros aleatorios entre 0 y 1
plt.hist(x)
print("== Histograma aleatorio ==")


== Histograma aleatorio ==

otro tipo de datos, tomados de una campana de gauss, es decir una distribucion normal:


In [47]:
N=500
x = np.random.randn(N)
plt.hist(x)
print("== Histograma aleatorio Normal ==")


== Histograma aleatorio Normal ==

In [60]:
N=1000
x1 = np.random.randn(N)
x2 = 2+2*np.random.randn(N)

plt.hist(x1,20,alpha=0.3)
plt.hist(x2,20,alpha=0.3)
print("== Histograma de dos distribuciones ==")


== Histograma de dos distribuciones ==

Imagenes (imshow)

Si tenemos una matriz de datos, podemos visualizarla como si fuese una imagen, aqui generaremos una mtriz de 10 x 10 numeros aleatorios


In [68]:
N=10
matriz = np.random.randn(N,N)
plt.imshow(matriz)
print("== Imagen de Matriz ==")


== Imagen de Matriz ==

La matriz era demasiado


In [71]:
N=10
matriz = np.random.randn(N,N)
plt.imshow(matriz, interpolation='nearest')
plt.grid()
print("== Imagen de Matriz ==")


== Imagen de Matriz ==

In [ ]: